/**
 * @projectName: LeetCode
 * @package: PACKAGE_NAME
 * @className: Num202
 * @author: Tongxinxin
 * @description: 快乐数
 * @date: 2025/9/6 9:56
 * @version: 1.0
 */
public class Num202 {
    public boolean isHappy(int n) {
        int slow=n,fast=bitSum(n);
        while(slow!=fast){
            //慢指针走一步，快指针走两步
            slow=bitSum(slow);
            fast=bitSum(bitSum(fast));
        }
        return slow==1;
    }
    //替换数为其每个位置上的数字的平方和
    public int bitSum(int n){
        int sum=0;
        //先计算最后一位是多少
        while(n!=0) {
            int t = n % 10;
            //收集平方和
            sum+=t*t;
            //更新n位数，将已经计算过的最后一位数删掉
            n=n/10;
        }
        return sum;
    }
}
